3.5.1 go vet
这个命令不会帮开发人员写代码,但如果开发人员已经写了一些代码, vet
命令会帮开发人员检测代码的常见错误。让我们看看 vet
捕获哪些类型的错误。
Printf
类函数调用时,类型匹配错误的参数。- 定义常用的方法时,方法签名的错误。
- 错误的结构标签。
- 没有指定字段名的结构字面量。
让我们看看许多Go开发新手经常犯的一个错误。 fmt.Printf
函数常用来产生格式化输出,不过这个函数要求开发人员记住所有不同的格式化说明符。代码清单3-8中给出的就是一个例子。
代码清单3-8 使用 go vet
01 package main
02
03 import "fmt"
04
05 func main() {
06 fmt.Printf("The quick brown fox jumped over lazy dogs", 3.14)
07 }
这个程序要输出一个浮点数3.14,但是在格式化字符串里并没有对应的格式化参数。如果对这段代码执行 go vet
,会得到如下消息:
go vet main.go
main.go:6: no formatting directive in Printf call
go vet
工具不能让开发者避免严重的逻辑错误,或者避免编写充满小错的代码。不过,正像刚才的实例中展示的那样,这个工具可以很好地捕获一部分常见错误。每次对代码先执行 go vet
再将其签入源代码库是一个很好的习惯。